package com.example.day08;

/**
 * 枚举类型
 */
public enum EnumDemo {
    /**
     * 枚举常量-每个枚举常量都是代表则枚举类型的唯一实例
     *
     * publi static  final  EnumDemo  F= new EnumDemo（）；
     *
     *
     *   F
     *
     *   M
     */

    F("女"),
    M("男");

    private   String sign;

    public String getSign() {
        return sign;
    }

    EnumDemo(){
        System.out.println("EnumDemo空参构造。。。。。。。");
    }
    EnumDemo(String sign){
        this.sign=sign;
        System.out.println("EnumDemo带参构造。。。。。。。。。");
    }

}

class  EnumDemoTest{
    public static void main(String[] args) {
        /**
         * 获取单个枚举常量
         */
        EnumDemo e1=EnumDemo.F;
        EnumDemo e2=EnumDemo.M;
        System.out.println(e1);
        System.out.println(e2);

        /**
         * 获取枚举类型对应的值
         */
        System.out.println(e1.getSign());
        System.out.println(e2.getSign());

        /**
         * 获取所有的枚举常量
         */
        EnumDemo [] enumDemos=EnumDemo.values();
        for (EnumDemo enumDemo : enumDemos) {
            System.out.println(enumDemo+":"+enumDemo.getSign());


        }

        /**
         * 引用
         * 字符串到枚举类型的绑定
         * 如何设计-状态性的东西-设计成枚举类型
         * 前端表单页面-单选按钮
         *   <input  type='radio'  name='gender' value='F'>女
         *    <input  type='radio'  name='gender' value='M'>男
         *
         * 提交-后端拿到的是F，M这个=两个字符串
         */
        String  gender="F";
        /**
         * 字符串换成对应的枚举类型
         * 前提-字符串的值一定要能够匹配到枚举类型中地方常量名称
         */
        EnumDemo  sex=Enum.valueOf(EnumDemo.class,gender);
        Student s2=new Student(2,"tom",sex);
        System.out.println(s2);

        /**
         * 枚举类型直接赋值- 单元测试中-提供一个数据
         */

        Student  s1=new Student(1,"admin",EnumDemo.M);
        System.out.println(s1);

    }
}
